home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / p_man / cat3 / Xm / XmSpinBoxValidatePosition.z / XmSpinBoxValidatePosition
Text File  |  1998-10-30  |  12KB  |  199 lines

  1.  
  2.  
  3.  
  4.      XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn((((3333UUUUXXXXNNNN))))IIIIXXXX SSSSyyyysssstttteeeemmmmXXXXmmmmVVVVSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn((((3333XXXX))))
  5.  
  6.  
  7.  
  8.      NNNNAAAAMMMMEEEE
  9.           XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn - translate the current value of
  10.           the specified XmSpinBox child into a valid position
  11.  
  12.      SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.           #include <Xm/SpinBox.h>
  14.           iiiinnnntttt XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn(
  15.           WWWWiiiiddddggggeeeetttt tttteeeexxxxttttffffiiiieeeelllldddd,
  16.           iiiinnnntttt ****ppppoooossssiiiittttiiiioooonnnn);
  17.  
  18.      VVVVEEEERRRRSSSSIIIIOOOONNNN
  19.           This page documents Motif 2.1.
  20.  
  21.      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  22.           The XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn function is a utility that can
  23.           be used by applications wanting to implement a policy for
  24.           tracking user modifications to editable XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxx children
  25.           of type _X_m_N_U_M_E_R_I_C. The specifics of when and how the user's
  26.           modifications take effect is left up to the application.
  27.  
  28.           _t_e_x_t__f_i_e_l_d
  29.                     The _t_e_x_t__f_i_e_l_d argument specifies the widget ID of
  30.                     the child of the XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxx that is being modified.
  31.                     The requirement on _t_e_x_t__f_i_e_l_dis that it holds the
  32.                     aaaacccccccceeeessssssssTTTTeeeexxxxttttuuuuaaaallll trait (already a requirement for
  33.                     children of XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxx). This way, XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxx can
  34.                     extract the string out of the _t_e_x_t__f_i_e_l_d widget
  35.                     (even if it is not an _X_m_T_e_x_t_F_i_e_l_d).
  36.  
  37.           _p_o_s_i_t_i_o_n  The location pointed to by the position argument
  38.                     is assigned the result of the translation done by
  39.                     XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn.
  40.                     XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn first checks to make
  41.                     sure this is an _X_m_N_U_M_E_R_I_C XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxx child. If it
  42.                     is not, XXXXSSSSmmmmppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn sets position to
  43.                     the current position and returns _X_m_C_U_R_R_E_N_T__V_A_L_U_E.
  44.  
  45.           XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnnattempts to translate the input
  46.           string to a floating point number. If this translation
  47.           fails, XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn sets position to the
  48.           current position and returns _X_m_C_U_R_R_E_N_T__V_A_L_U_E.
  49.  
  50.           XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn converts the floating point number
  51.           to an integer using the _X_m_N_d_e_c_i_m_a_l_P_o_i_n_t_s resource. Extra
  52.           decimal places are truncated. The resulting integer is range
  53.           checked to make sure it falls within the valid range defined
  54.           by _X_m_N_m_i_n_i_m_u_m_V_a_l_u_e and _X_m_N_m_a_x_i_m_u_m_V_a_l_u_e inclusive. If the
  55.           input falls outside this range, XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn
  56.           sets position to the nearest limit and returns either
  57.           _X_m_M_I_N_I_M_U_M__V_A_L_U_E or _X_m_M_A_X_I_M_U_M__V_A_L_U_E.
  58.  
  59.           Finally, XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn checks the integer to
  60.  
  61.  
  62.  
  63.      Page 1                                         (printed 10/24/98)
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn((((3333UUUUXXXXNNNN))))IIIIXXXX SSSSyyyysssstttteeeemmmmXXXXmmmmVVVVSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn((((3333XXXX))))
  71.  
  72.  
  73.  
  74.           make sure it belongs to the series defined by
  75.           XXXXmmmmNNNNmmmmiiiinnnniiiimmmmuuuummmmVVVVaaaalllluuuueeee ............ XXXXmmmmNNNNmmmmiiiinnnnuuuummmmuuuummmmVVVVaaaalllluuuueeee ++++ ((((((((nnnn ---- 1111)))) ****
  76.           XXXXmmmmNNNNiiiinnnnccccrrrreeeemmmmeeeennnnttttllllVVVVaaaalllluuuueeee)))). If the integer does not belong to this
  77.           series, XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn sets position to the
  78.           nearest element which is less than or equal to the integer
  79.           and returns _X_m_I_N_C_R_E_M_E_N_T__V_A_L_U_E.
  80.  
  81.           Otherwise, XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn assigns the integer to
  82.           position and returns _X_m_V_A_L_I_D__V_A_L_U_E.
  83.  
  84.      RRRREEEETTTTUUUURRRRNNNN VVVVAAAALLLLUUUUEEEE
  85.           The XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn function returns the status of
  86.           the validation.  The set of possible values returned is as
  87.           follows:
  88.  
  89.           _X_m_C_U_R_R_E_N_T__V_A_L_U_E
  90.                     Cannot convert, returning current position_value.
  91.  
  92.           _X_m_M_I_N_I_M_U_M__V_A_L_U_E
  93.                     Less than min.
  94.  
  95.           _X_m_M_A_X_I_M_U_M__V_A_L_U_E
  96.                     More than max.
  97.  
  98.           _X_m_I_N_C_R_E_M_E_N_T__V_A_L_U_E
  99.                     Not on increment.
  100.  
  101.           _X_m_V_A_L_I_D__V_A_L_U_E
  102.                     Okay.
  103.  
  104.      EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
  105.           This first example demonstrates how the
  106.           XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnnfunction could be used from inside
  107.           an XXXXmmmmNNNNmmmmooooddddiiiiffffyyyyVVVVeeeerrrriiiiffffyyyyCCCCaaaallllllllbbbbaaaacccckkkk callback installed on the
  108.           XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxx or the XXXXmmmmSSSSiiiimmmmpppplllleeeeSSSSppppiiiinnnnBBBBooooxxxx:
  109.  
  110.           /*
  111.            * Install a callback on a spin box arrow press.
  112.            */
  113.             XtAddCallback(sb, XmNmodifyVerifyCallback, ModifyVerifyCB, NULL);
  114.             XtAddCallback(simple_sb, XmNmodifyVerifyCallback, ModifyVerifyCB, NULL);
  115.  
  116.           with the callback doing:
  117.  
  118.           void ModifyVerifyCB(widget, call_data, client_data) {
  119.               XmSpinBoxCallbackStruct *cbs = (XmSpinBoxCallbackStruct*) call_data;
  120.               int position;
  121.               Widget textual = NULL;
  122.               if (XtIsSubclass(w, xmSimpleSpinBoxWidgetClass))
  123.               {
  124.                   Arg args[1];
  125.                   XtSetArg(args[0], XmNtextField, &textual);
  126.  
  127.  
  128.  
  129.      Page 2                                         (printed 10/24/98)
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn((((3333UUUUXXXXNNNN))))IIIIXXXX SSSSyyyysssstttteeeemmmmXXXXmmmmVVVVSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnn((((3333XXXX))))
  137.  
  138.  
  139.  
  140.                   XtGetValues(w, args, 1);
  141.               }
  142.               else if (XtIsSubclass(w, xmSpinBoxWidgetClass))
  143.                 textual = cbs->widget;
  144.               else
  145.                 textual = (Widget) NULL;
  146.  
  147.               ...
  148.  
  149.               if (XmSpinBoxValidatePosition(textual, &position) == XmCURRENT_VALUE)
  150.                 XBell(XtDisplay(w), 0);
  151.               else
  152.                 cbs->position = position;
  153.           }
  154.  
  155.           This second example demonstrates how the
  156.           XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxxVVVVaaaalllliiiiddddaaaatttteeeePPPPoooossssiiiittttiiiioooonnnnfunction could be used from inside
  157.           an XXXXmmmmNNNNaaaaccccttttiiiivvvvaaaatttteeeeCCCCaaaallllllllbbbbaaaacccckkkk callback installed on the TTTTeeeexxxxttttFFFFiiiieeeelllldddd
  158.           child of the XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxx:
  159.  
  160.           /*
  161.            * Install a callback on a spin box arrow press.
  162.            */
  163.           XtAddCallback(tf, XmNactivateCallback, ModifyVerifyChildCB, NULL);
  164.  
  165.           with the callback doing:
  166.  
  167.           void ModifyVerifyChildCB(widget, call_data, client_data) {
  168.               int     position;
  169.               Widget  textual = widget;
  170.               Arg     args[1];
  171.  
  172.               if (XmSpinBoxValidatePosition (textual, &position) == XmCURRENT_VALUE)
  173.                 XBell(XtDisplay(widget), 0);
  174.  
  175.               /* Set the position constraint resource of the textfield */
  176.  
  177.               XtSetArg(args[0], XmNposition, position);
  178.               XtSetValues(textual, args, 1);
  179.           }
  180.  
  181.      SSSSEEEEEEEE AAAALLLLSSSSOOOO
  182.           XXXXmmmmSSSSppppiiiinnnnBBBBooooxxxx(3), XXXXmmmmCCCCrrrreeeeaaaatttteeeeSSSSppppiiiinnnnBBBBooooxxxx(3)
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.      Page 3                                         (printed 10/24/98)
  196.  
  197.  
  198.  
  199.